1 Aufgaben

Alle folgenden Aufgaben beziehen sich auf den Datensatz mpg, Teil des R-Pakets ggplot2.

  1. Erstellen Sie ein Streudiagramm mit Motorgröße displ und Spritverbrauch hwy; Farbe soll der Antriebsart drv entsprechen. Reduzieren Sie Overplotting.
  2. Gliedern Sie das Diagramm der letzten Aufgabe in mehrere Facetten und zwar anhand der Werte der Variablen “Antriebsart”.
  3. Ergänzen Sie eine Regressionsgerade in rosa, ohne Standardfehler.
  4. Visualisieren Sie die Verteilung des Spritverbrauchs; gruppieren Sie (mit Farben) nach Antriebsart und facettieren nach Klasse des Fahrzeugs.
  5. Fügen Sie einen Titel hinzu und verändern Sie das Farbschema.
  6. Erstellen Sie ein Balkendiagramm, das zeigt, wie viele Autos es für jede Antriebsart gibt.
  7. Unterteilen Sie die Balken, um die Häufigkeit der Zylinderzahl anzuzeigen. Welche anderes Argument für “position” ist hier möglich (bzw. sinnvoll)?
  8. Erstellen Sie ein Streudiagramm mit Variablen cyl und hwy in Verbindung setzt. Nutzen Sie das Geom “Linie” und entfernen Sie den Standardfehler!
  9. Zum letzten Plot: Reduzieren Sie das Overplotting! Reduzieren Sie die “Lücke” bei cyl=7!
  10. Erstellen Sie ein Diagramm mit displ auf der X-Achse und hwy auf der Y-Achse. Verringern Sie Overplotting. Facettieren Sie nach der Antriebsart des Fahrzeugs. Verwenden Sie keine Punkte.
  11. Kreiere ein Diagramm, welches 3 Scatterplot Diagramme beinhaltet und welche alle 3 durch eine blaue Linie durchkreuzt werden.
  12. Kreiere ein Diagramm, bei welchem alle Autos mit Frontanrieb mit gelben Punkten dargestellt werden und alle anderen Autos mit blauen Punkten.
  13. Stelle das Streudiagramm von der letzten Aufgabe als Flächendiagramm dar.
  14. Ersetze das Flächendiagramm durch ein Liniendiagramm.

2 Lösungen

library(tidyverse)

2.1 Aufgabe 1

Erstellen Sie ein Streudiagramm mit Motorgröße displ und Spritverbrauch hwy; Farbe soll der Antriebsart drv entsprechen. Reduzieren Sie Overplotting.

ggplot(mpg) +
       aes(x = displ, 
           y = hwy,
           color = drv) +
       geom_point(alpha = .5,
                  position = "jitter")

2.2 Aufgabe 2

Gliedern Sie das Diagramm der letzten Aufgabe in mehrere Facetten und zwar anhand der Werte der Variablen “Antriebsart”.

ggplot(data = mpg) +
       geom_jitter(aes(x = displ, 
                       y = hwy, 
                       color = drv), 
                   alpha = .5) +
       facet_wrap(~drv)

2.3 Aufgabe 3

Ergänzen Sie eine Regressionsgerade in rosa, ohne Standardfehler.

ggplot(data = mpg) +
       aes(x = displ, 
           y = hwy) +
       geom_jitter(aes(color = drv),
                   alpha = .5) +
       facet_wrap(~drv) +
       geom_smooth(method = "lm",
                   se = FALSE,
                   color = "pink")

2.4 Aufgabe 4

Visualisieren Sie die Verteilung des Spritverbrauchs; gruppieren Sie (mit Farben) nach Antriebsart und facettieren nach Klasse des Fahrzeugs.

ggplot(mpg) +
       aes(x = hwy, fill = drv)+
       geom_density() +
       facet_wrap(~ class)

2.5 Aufgabe 5

Fügen Sie einen Titel hinzu und verändern Sie das Farbschema.

ggplot(mpg) +
       aes(x = hwy, fill = drv)+
       geom_density() +
       facet_wrap(~ class) +
       labs(title = "Verteilung des Spritverbrauchs (Highway)",
            fill = "Antriebsart") +
       scale_fill_brewer(type = "qual", palette = 2)

2.6 Aufgabe 6

Erstellen Sie ein Balkendiagramm, das zeigt, wie viele Autos es für jede Antriebsart gibt.

ggplot(mpg) +
       geom_bar(aes(x = drv))

2.7 Aufgabe 7

Unterteilen Sie die Balken, um die Häufigkeit der Zylinderzahl anzuzeigen. Welche anderes Argument für “position” ist hier möglich (bzw. sinnvoll)?

ggplot(mpg) +
       geom_bar(aes(x = drv, fill = factor(cyl)))

ggplot(mpg) +
       geom_bar(aes(x = drv, fill = factor(cyl)), 
                position = "dodge") +
       scale_fill_viridis_d()

ggplot(mpg) +
       geom_bar(aes(x = drv, fill = factor(cyl)), 
                position = "fill") +
       scale_fill_brewer(type = "qual", palette = 1)

Aufgabe 1

Erstellen Sie ein Streudiagramm mit Variablen cyl und hwy in Verbindung setzt. Nutzen Sie das Geom “Linie” und entfernen Sie den Standardfehler!

ggplot(data = mpg) + 
       aes(x=cyl, y=hwy) +
       geom_point() +
       #  geom_line()  nicht hilfreich
       geom_smooth(method = "lm", se=FALSE)  # Gerade!

  #   geom_smooth(, se=FALSE)  # oder so

2.8 Aufgabe 8

Erstellen Sie ein Streudiagramm mit Variablen cyl und hwy in Verbindung setzt. Nutzen Sie das Geom “Linie” und entfernen Sie den Standardfehler!

ggplot(data = mpg) + 
       aes(x=cyl, y=hwy) +
       geom_point() +
       #  geom_line()  nicht hilfreich
       geom_smooth(method = "lm", se=FALSE)  # Gerade!

  #   geom_smooth(, se=FALSE)  # oder so

2.9 Aufgabe 9

Zum letzten Plot: Reduzieren Sie das Overplotting! Reduzieren Sie die “Lücke” bei cyl=7!

ggplot(data=mpg) +
       aes(x=factor(cyl), y=hwy) +
       geom_smooth(aes(group = 1),
                   se=FALSE)+
       geom_jitter(
                   alpha = .5,
                   width = .1)

library(tidyverse)
ggplot(data = mpg) +
       geom_point(mapping = aes(x = displ, 
                                y = hwy, 
                                color = class))

2.10 Aufgabe 10

Erstellen Sie ein Diagramm mit displ auf der X-Achse und hwy auf der Y-Achse. Verringern Sie Overplotting. Facettieren Sie nach der Antriebsart des Fahrzeugs. Verwenden Sie keine Punkte.

ggplot(mpg) +
       aes(y = hwy, x = displ) +
       geom_bin2d() +
       facet_grid(. ~ drv)

2.11 Aufgabe 11

Kreiere ein Diagramm, welches 3 Scatterplot Diagramme beinhaltet und welche alle 3 durch eine blaue Linie durchkreuzt werden.

data(mpg)
ggplot(data = mpg) +
       aes(x = displ, y = hwy) +
       geom_point() +
       facet_wrap(~ drv) +  # Mac: Alt-n, Windows: Altgr-+
       geom_smooth()

2.12 Aufgabe 12

Kreiere ein Diagramm, bei welchem alle Autos mit Frontanrieb mit gelben Punkten dargestellt werden und alle anderen Autos mit blauen Punkten.

mpg %>% 
       mutate(is_front = case_when(
         drv == "f" ~ TRUE,
         TRUE ~ FALSE
       )) %>% 
       ggplot() +
       aes(x = displ, y = hwy, color = is_front) +
       geom_point(size = 2) +
       scale_color_manual(values = c("blue", "yellow")) +
       theme_minimal()

2.13 Aufgabe 13

Stelle das Streudiagramm von der letzten Aufgabe als Flächendiagramm dar.

mpg %>% 
       mutate(is_front = case_when(
         drv == "f" ~ TRUE,
         TRUE ~ FALSE
       )) %>% 
       mutate(displ = round(displ)) %>% 
       group_by(is_front, displ) %>% 
       summarise(hwy_avg = mean(hwy)) %>% 
       ggplot() +
       aes(x = displ, y = hwy_avg, fill = is_front) +
       geom_area()

2.13.1 Varianten

ggplot(mpg) +
       aes(x = displ) +
       geom_area(stat = "bin")

mpg %>% 
       group_by(cyl, drv) %>% 
       summarise(mean_grouped = mean(hwy)) %>% 
       ggplot() +
       aes(x = cyl, y = mean_grouped) +
       geom_area(position = "stack",
                 aes(fill = drv))

  ggplot(mpg) +
       aes(x = displ) +
       geom_area(stat = "bin", aes(fill = drv))

  ggplot(mpg) +
       aes(x = displ) +
       geom_density(aes(fill = drv), alpha = .5)

  ggplot(mpg) +
       aes(x = displ) +
       geom_histogram(aes(fill = drv), alpha = .5)

  ggplot(mpg) +
       aes(x = displ) +
       geom_histogram(aes(fill = drv), bins = 10) +
       facet_wrap(~ drv)

2.14 Aufgabe 14

Ersetze das Flächendiagramm durch ein Liniendiagramm

mpg %>% 
       mutate(is_front = case_when(
         drv == "f" ~ TRUE,
         TRUE ~ FALSE
       )) %>% 
       mutate(displ = round(displ)) %>% 
       group_by(is_front, displ) %>% 
       summarise(hwy_avg = mean(hwy)) %>% 
       ggplot() +
       aes(x = displ, y = hwy_avg, fill = is_front, color = is_front) +
       geom_line() +
       geom_point(size = 3, alpha = .7)